package queue

// A FIFO queue.
// 定义切片类型
// 使用组合扩展类型，达到继承的用法
type Queue []int

//interface{}表示任何类型，类比object
//type Queue []interface{}

// Pushes the element into the queue.
//
//	e.g. q.Push(123)
func (q *Queue) Push(v int) {
	*q = append(*q, v) //*q获取q指针指向的类型Queue本身
}

// Pops element from head.
func (q *Queue) Pop() int {
	head := (*q)[0]
	*q = (*q)[1:]
	return head
	//return head.(int)//.(类型)类型强制转换
}

// Returns if the queue is empty or not.
func (q *Queue) IsEmpty() bool {
	return len(*q) == 0
}
